﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using aichat.Entities;

namespace aichat.Services
{
    public interface IUserService
    {
        public int AddUser(UserModel user);

        public int DeleteUser(int userId);

        public int EditUser(UserModel user);

        public List<UserModel> FindAllUser();

        public UserModel Login(string userName, string password, bool IsChecked);

        Task<UserModel?> GetUserByIdAsync(int userId);
        Task<bool> IsVipUserAsync(int userId);
        Task<bool> ValidateUserAsync(string username, string password);
        Task<UserModel?> GetUserByUsernameAsync(string username);
        Task<bool> CreateUserAsync(UserModel user);
        Task<bool> UpdateUserAsync(UserModel user);
        Task<bool> DeleteUserAsync(int id);
        Task<bool> CanUserChatAsync(int userId);
        Task<bool> IncrementChatCountAsync(int userId);
        Task<List<UserModel>> GetAllUsersAsync();
        Task<bool> UpdateVipStatusAsync(int userId, VipType vipType, DateTime? expireDate);
        Task<UserModel?> GetUserByEmailAsync(string email);
    }
}
